#ifndef FREESTIMULATEPAGE_H
#define FREESTIMULATEPAGE_H

#include <QWidget>

namespace Ui {
class FreeStimulatePage;
}

class FreeStimulatePage : public QWidget
{
    Q_OBJECT

    private:
        Ui::FreeStimulatePage *ui; // UI指针

        int m_currentA; // A通道当前电流值
        int m_currentB; // B通道当前电流值

        const int MAX_CURRENT = 100; // 最大电流限制值

    public:
        explicit FreeStimulatePage(QWidget *parent = nullptr);
        ~FreeStimulatePage();

        /**
         * @brief 初始化信号槽
         */
        void setupConnections();

        /**
         * @brief 初始化数据
         */
        void initData();

        /**
         * @brief 更新电流显示
         */
        void updateCurrentDisplay();

        /**
         * @brief 获取刺激参数
         */
        QByteArray getStimulateParams();


        /**
         * @brief 发送刺激参数
         */
        void sendStimulateParam();

        /**
         * @brief 弹窗提示
         */
        void showToast(const QString &msg);


    protected:

        /**
         * 页面显示事件
         */
        void showEvent(QShowEvent *event) override;


    signals:

        /**
         * @brief 返回主页面
         */
        void requestBackToMainPage();

        /**
         * @brief 跳转到参数设置页面
         */
        void requestToParamsPage();

    private slots:

        void onExit();

        void handleSerialData(const QByteArray &data);

        void onBtnReduceAClick();

        void onBtnIncreaseAClick();

        void onBtnReduceBClick();

        void onBtnIncreaseBClick();

        /**
         * @brief A通道的开始，暂停
         */
        void onBtnStartStopAClick();


        /**
         * @brief B通道的开始，暂停
         */
        void onBtnStartStopBClick();

        /**
         * @brief 参数设置按钮的点击
         */
        void onBtnParamsClick();

};

#endif // FREESTIMULATEPAGE_H
